// @algorithm @lc id=50 lang=cpp 
// @title powx-n


// @test(2.00000,10)=1024.00000
// @test(2.10000,3)=9.26100
// @test(2.00000,-2)=0.25000
// @test(34.00515,-3)=0.00003
class Solution {
public:
    double myPow(double x, int n) {
        return n>=0 ? quickPower(x, n) : 1.0/quickPower(x, -(n+1))/x;
    }
    double quickPower(double x, int n){
        double res = 1.0;
        while(n){
            if(n&1)
                res *= x;
            x *= x;
            n >>= 1;
        }
        return res;
    }
};